#ifndef ResourceManager_h__
#define ResourceManager_h__
#pragma once

// Std.
#include <vector>

// CoreLib.
#include "Path.h"

namespace le
{
	class AbstractResource;
	class ObjectVisitor;
}

namespace le
{
	enum EResourceType
	{
		eResourceType_Visual,
		eResourceType_Unkown, // Always set this one last
	};

	class ResourceManager
	{
	public:
		ResourceManager();
		virtual ~ResourceManager();

		bool LoadFolder(const le::Path& resourceFolder);
		bool LoadFile(const le::Path& resourcePath);

	private:
		le::AbstractResource* LoadResource(le::ObjectVisitor& visitor);
		EResourceType GetResourceTypeFromString(const std::string& resourceType) const;
		std::string GetStringFromResourceType(const EResourceType resourceType) const;

	private:
		// TODO: This should become a map-like structure with key (GUID) value (AbstractResource*)
		std::vector<le::AbstractResource*> m_Resources;
	};
}

#endif // ResourceManager_h__